4a9fe16b1de9c009a0eac1d2c1497c8401995714,controls/src/main/java/org/tweetwallfx/controls/WordleSkin.java,WordleSkin,tweetToCloud,#,341

Before Change


        tweetWordList.clear();

        if (null != hbox) {
            FadeTransition ft = new FadeTransition(Duration.seconds(1.5), hbox);
            ft.setToValue(0);
            fadeOuts.getChildren().add(ft);
            ft.setOnFinished(event -> {

After Change


        min = limitedWords.stream().filter(w -> w.getWeight() > 0).min(Comparator.naturalOrder()).get().getWeight();

        Map<Word, Bounds> boundsMap = recalcTagLayout(limitedWords);
        Duration defaultDuration = Duration.seconds(1.5);

        List<Transition> fadeOutTransitions = new ArrayList<>();
        List<Transition> moveTransitions = new ArrayList<>();
        List<Transition> fadeInTransitions = new ArrayList<>();
        
        Bounds layoutBounds = pane.getLayoutBounds();

        boundsMap.entrySet().stream().forEach(entry -> {
            Word word = entry.getKey();
            Bounds bounds = entry.getValue();
            Optional<TweetWordNode> optionalTweetWord = tweetWordList.stream().filter(tweetWord -> tweetWord.tweetWord.text.trim().equals(word.getText())).findFirst();
            if (optionalTweetWord.isPresent()) {
                boolean removed = tweetWordList.remove(optionalTweetWord.get());
                Text textNode = optionalTweetWord.get().textNode;

                word2TextMap.put(word, textNode);
                LocationTransition lt = new LocationTransition(defaultDuration, textNode);

                lt.setFromX(textNode.getLayoutX());
                lt.setFromY(textNode.getLayoutY());
                lt.setToX(bounds.getMinX() + layoutBounds.getWidth() / 2d);
                lt.setToY(bounds.getMinY() + layoutBounds.getHeight() / 2d + bounds.getHeight() / 2d);
                moveTransitions.add(lt);

                FontSizeTransition ft = new FontSizeTransition(defaultDuration, textNode);
                ft.setFromSize(textNode.getFont().getSize());
                ft.setToSize(getFontSize(word.getWeight()));
                moveTransitions.add(ft);

            } else {
                Text textNode = createTextNode(word);

                word2TextMap.put(word, textNode);
                textNode.setLayoutX(bounds.getMinX() + layoutBounds.getWidth() / 2d);
                textNode.setLayoutY(bounds.getMinY() + layoutBounds.getHeight() / 2d + bounds.getHeight() / 2d);
                textNode.setOpacity(0);
                pane.getChildren().add(textNode);
                FadeTransition ft = new FadeTransition(defaultDuration, textNode);
                ft.setToValue(1);
                fadeInTransitions.add(ft);
            }
        });

        tweetWordList.forEach(tweetWord -> {
            FadeTransition ft = new FadeTransition(defaultDuration, tweetWord.textNode);
            ft.setToValue(0);
            ft.setOnFinished((event) -> {
                pane.getChildren().remove(tweetWord.textNode);
            });
            fadeOutTransitions.add(ft);
        });

        tweetWordList.clear();

        if (null != hbox) {
            FadeTransition ft = new FadeTransition(defaultDuration, hbox);
            ft.setToValue(0);
            ft.setOnFinished(event -> {
                pane.getChildren().remove(hbox);
            });
            fadeOutTransitions.add(ft);
        }
        if (null != mediaBox) {
            FadeTransition ft = new FadeTransition(defaultDuration, mediaBox);
            ft.setToValue(0);
            ft.setOnFinished(event -> {
                pane.getChildren().remove(mediaBox);